Rozšíření API requestu – doplnění informací

NouF
Člen | 67
+
0
-

Ahoj,

můžu se zeptat, jak řešit „rozšíření requestu“?

V API požadavku posílám toto:

grant_type:client_credentials
client_id:2
client_secret:321321
scope:test

Ale chci si to trochu upravit, abych třeba neposílal grant_type (ten si vezmu např. z URL)

client_id:2
client_secret:321321
scope:test

Myšlenka je taková, že uživatel pošle jen client_id, secret a scope a já si rozšířím tento request o ten parameter.

public function credentials(ApiRequest $request, ApiResponse $response)
    {
        try {

			// můžu v tomto místě rozšířit ten $request?

            return $this->server->respondToAccessTokenRequest($request, $response);

Moc děkuju

dakur
Člen | 493
+
0
-

@NouF Záleží na tom, co je za třídu ApiRequest. To je tvoje nebo z nějaké knihovny? Řeší se to různě, např. tak, že třída ApiRequest může mít nějakou metodu withParameter(string $key, string $value): self, která vrátí novou instanci sebe sama obohacenou o nový parametr. Nebo samozřejmě můžeš použít i mutable variantu $request->addParameter().

NouF
Člen | 67
+
0
-

@dakur Moc děkuju.

Ta třída je tato: ApiRequest.php

dakur
Člen | 493
+
0
-

@NouF Ta třída dědí ze třídy ProxyRequest a ta přesně ty with*() metody obsahuje. Záleží už tedy jen na tom, jak přesně máš ty parametry udělané – jestli jako query string, nebo v těle požadavku – podle toho zvolíš příslušnou metodu. Víceméně to pak bude vypadat nějak takto:

public function credentials(ApiRequest $request, ApiResponse $response)
    {
        try {

			$request = $request->withQueryParams(['grant_type' => 'client_credentials']); // v případě query parametrů

            return $this->server->respondToAccessTokenRequest($request, $response);