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: - Office A 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: 3 roky
|
0