| Autor | Zpráva | ||
|---|---|---|---|
| bautren Profil |
Dobrý den, mám problém ohledně posílání requestu na API ve formátu YAML. API je nastavené správně a vrací mi odpověď, ale pokáždé stejnou, tudíž
{"message":"Unauthorized"} 401. Zkoušel jsem data posílat v JSON formátu, ale odpověď byla stejná. Zdej přikládám example YAMLu, co jsem k tomuto úkolu dostal.
paths:
/v1/office/availability:
parameters: []
post:
summary: Check Office Availability
operationId: post-auth-v1-registration-advisor
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
email:
type: boolean
slug:
type: boolean
examples:
Example:
value:
email: true
slug: true
'401':
description: Unauthorized
headers: {}
'409':
description: Conflict (returned if e-mail or slug are already used by tenant)
content:
application/json:
schema:
type: object
properties:
email:
type: boolean
slug:
type: boolean
examples:
Example - E-mail in use:
value:
email: false
slug: true
parameters: []
requestBody:
content:
application/json:
schema:
type: object
properties:
tenant_id:
type: number
slug:
type: string
email:
type: string
required:
- tenant_id
- slug
- email
examples:
Example:
value:
email: broker@example.com
slug: broker-inc
tenant_id: 1
description: ''
description: 'Checks if an office with given e-mail and office slug (URL) is available for registration, or already registered.'
security:
- Vendor API Key: []
tags:
- OfficeA metoda na volání vypadá tahle: protected function sendRequest($url, $data = [])
{
$yaml =
<<<EOD
- post:
operationId: 10002
api_key: (**secret***)
- value:
slug: true
email: true
EOD;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-yaml'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $yaml);
$result = curl_exec($ch);
$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
print_r($result);
echo "<br><br>";
print_r($httpStatus);
return [$httpStatus, $result];
}Potřeboval bych dostat platnou odpověd od serveru, ale už opravdu nevím, co ještě zkusit. Děkuji za případnou pomoc :-) |
||
| Firibix Profil |
#2 · Zasláno: 9. 12. 2020, 17:53:39
Reakce na bautrena:
API vrací odpověď 401 Unauthorized, tedy buď nemáš oprávnění provést akci, o kterou se snažíš, nebo se k API špatně přihlašuješ (např. nesprávný API klíč, špatný způsob posílání toho klíče – má být součástí samotného YAML body, nebo spíš v nějaké HTTP hlavičce?). |
||
| bautren Profil |
Firibix:
To je právě ten problém, že já nevím. Nevím jestli to má být v hlavičce, nebo v body. Jediný co mi bylo řečeno, tak tady je API klíč a ať to funguje, správná implementace je v tom examplu, co jsme zaslal. Ale bohužel se v tom absolutně nevyznám. :) bautren: Dostal jsem k tomu: API end-point Tenant_id API_key bautren: Ale bohužel nevím, jak to složit, aby mi to vrátilo správnou odpověď |
||
| Medvídek Profil |
#4 · Zasláno: 10. 12. 2020, 17:15:59
Koukni, jak je v OpenAPI definován ten:
security: - Vendor API Key: [] |
||
|
Časová prodleva: 5 let
|
|||
0