gw2-api / issues

14 stars 0 forks source link

Missing query string arguments from Link headers #47

Open sliekens opened 1 year ago

sliekens commented 1 year ago

Current Behavior

Routes that take a page and page_size argument return a Link header with links to other pages or even the current page. However, it does not take into account any other query string arguments such as v or lang.

GET /v2/colors?page=1&lang=de&v=latest HTTP/1.1
User-Agent: HTTP-REPL
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Link,X-Page-Total,X-Page-Size,X-Result-Total,X-Result-Count
Cache-Control: public, max-age=3600
Connection: keep-alive
Content-Language: de
Content-Length: 50222
Content-Type: application/json; charset=utf-8
Date: Sun, 25 Dec 2022 01:33:28 GMT
Expires: Sun, 25 Dec 2022 02:33:27 GMT
Link: </v2/colors?page=0&page_size=50>; rel=previous, </v2/colors?page=2&page_size=50>; rel=next, </v2/colors?page=1&page_size=50>; rel=self, </v2/colors?page=0&page_size=50>; rel=first, </v2/colors?page=12&page_size=50>; rel=last
Server: Quaggans
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Content-Type-Options: nosniff;nosniff
X-Frame-Options: SAMEORIGIN
X-Page-Size: 50
X-Page-Total: 13
X-Powered-By: ARR/2.5
X-Rate-Limit-Limit: 600
X-Result-Count: 50
X-Result-Total: 631
X-XSS-Protection: 1; mode=block

Expected Behavior

Query arguments from the request should be echoed in the Link response header.

Link: </v2/colors?page=0&page_size=50&lang=de&v=latest>; rel=previous, </v2/colors?page=2&page_size=50&lang=de&v=latest>; rel=next, </v2/colors?page=1&page_size=50&lang=de&v=latest>; rel=self, </v2/colors?page=0&page_size=50&lang=de&v=latest>; rel=first, </v2/colors?page=12&page_size=50&lang=de&v=latest>; rel=last

Steps To Reproduce

No response

Happening since

No response

Anything else?

This completely breaks Link for routes that have a required query string argument. The one that comes to mind is /v2/recipes/search which has a required input or output argument and an optional page and page_size, but only the latter are present in the Link header.

GET /v2/recipes/search?input=46746&page=0 HTTP/1.1
User-Agent: HTTP-REPL
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: X-Content-Type-Options,X-Result-Total,Link,X-Page-Total,X-Page-Size,X-Result-Count,X-Rate-Limit-Limit
Cache-Control: max-age=3600, private
Connection: keep-alive
Content-Language: en
Content-Length: 29299
Content-Type: application/json; charset=utf-8
Date: Sun, 25 Dec 2022 01:40:31 GMT
Expires: Sun, 25 Dec 2022 02:40:31 GMT
Link: </v2/recipes/search?page=1&page_size=50>; rel=next, </v2/recipes/search?page=0&page_size=50>; rel=self, </v2/recipes/search?page=0&page_size=50>; rel=first, </v2/recipes/search?page=17&page_size=50>; rel=last
Server: Quaggans
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Content-Type-Options: nosniff;nosniff
X-Frame-Options: SAMEORIGIN
X-Page-Size: 50
X-Page-Total: 18
X-Powered-By: ARR/2.5
X-Rate-Limit-Limit: 600
X-Result-Count: 50
X-Result-Total: 898
X-XSS-Protection: 1; mode=block