What are the Slack Archives?
Itβs a history of our time together in the Slack Community! Thereβs a ton of knowledge in here, so feel free to search through the archives for a possible answer to your question.
Because this space is not active, you wonβt be able to create a new post or comment here. If you have a question or want to start a discussion about something, head over to our categories and pick one to post in! You can always refer back to a post from Slack Archives if needed; just copy the link to use it as a reference..
Hello guys. My Glue API endpoint action returns ```{ "data": [ { "type": "test-main",
Hello guys. My Glue API endpoint action returns
{ "data": [ { "type": "test-main", "id": null, "links": { "self": "https:\/\/glue.int.zf.local\/test-main" } } ], "links": { "self": "https:\/\/glue.int.zf.local\/search?term=product-name-en_us23&itemsPerPage=24&country=DE&locale=en_US" } }
Whereas I want it to return
{ "data": { "type": "test-main", "id": null, "links": { "self": "https:\/\/glue.int.zf.local\/test-main" } } }
Here is the code in the action:
public function getAction(RestRequestInterface $restRequest): RestResponseInterface { $restResourceBuilder = new RestResourceBuilder(); $restResource = $restResourceBuilder->createRestResource('test-main'); $restResponse = $restResourceBuilder->createRestResponse()->addResource($restResource); return $restResponse; }
Can someone please advice?
Comments
-
your request uri probably lacks resource id part. What you probably do is
/test-main
which is interpreted as a collection request which always results in an array returned in the response even if there is only one resource in it.0 -
@UQKSAARKN Can you please elaborate? This is my Glue Endpoint GET {{glue-domain}}/search?term=product-name-en_us23&itemsPerPage=24&country=DE&locale=en_US
0 -
In Glue the url structure is limited and is interprerted in the following way:
/foo/fooId/bar/barId
where βfooβ and βbarβ are resource names, and βfooIdβ and βbarIdβ are resource ids.
Any request to
/foo
is interpreted as a collection request (since you are not asking for a specific resource by id), resulting in the response you are getting.0 -
@UQKSAARKN Thank you very much that explains a lot
0 -
@UQKSAARKN Is there a way to force a non-collection response in glue?
0 -
There is no config to allow controlling this in the old infrastructure (which I see you are using - judging by usage of the
RestRequestInterface
). New infra allows handling get and getCollection separately, so if you are using that on the project, it might make sense to try it out.As a workaround for your case, I would suggest to change the URL you are using to something like
/search/product-name-en_us?foo=bar&etc
. Thus you will get the ID you want to have. Also in this solution you can benefit from more traditional HTTP codes (like 404 in case the name is not found), which would not be possible for the collection requests as collection can be empty and itβs still 200.0 -
@UQKSAARKN Thank you π
0
Categories
- All Categories
- 42 Getting Started & Guidelines
- 7 Getting Started in the Community
- 8 Additional Resources
- 7 Community Ideas and Feedback
- 76 Spryker News
- 929 Developer Corner
- 787 Spryker Development
- 89 Spryker Dev Environment
- 362 Spryker Releases
- 3 Oryx frontend framework
- 35 Propel ORM
- 68 Community Projects
- 3 Community Ideation Board
- 30 Hackathon
- 3 PHP Bridge
- 6 Gacela Project
- 26 Job Opportunities
- 3.2K π Slack Archives
- 116 Academy
- 5 Business Users
- 370 Docker
- 551 Slack General
- 2K Help
- 75 Knowledge Sharing
- 6 Random Stuff
- 4 Code Testing
- 32 Product & Business Questions
- 70 Spryker Safari Questions
- 50 Random