资源文件中的 Laravel REST API 路由问题
Posted
技术标签:
【中文标题】资源文件中的 Laravel REST API 路由问题【英文标题】:Laravel REST API route Problem in Resource file 【发布时间】:2021-03-17 02:51:52 【问题描述】:<?php
namespace App\Http\Resources\Product;
use Illuminate\Http\Resources\Json\JsonResource;
class ProductResource extends JsonResource
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
return [
'href' => [
'self' => route('reviews.index', $this->id),
]
];
我的路线来了"href":"self":"http:\/\/127.0.0.1:8000\/api\/products\/1\/reviews"
像这样,
我要怎么解决?谢谢你
【问题讨论】:
【参考方案1】:这是由于 json 响应而发生的。 json 总是对代码进行编码,因此您可以使用 JSON_UNESCAPED_SLASHES
跳过 url 斜杠
response()->json(..., 200, [], JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
在laraveleloquent api resource也有同样的问题。最好的 将 json 选项应用于您的 Response 或 ResponseCollection 的方法是:
public function withResponse($request, $response)
$response->setEncodingOptions(JSON_UNESCAPED_SLASHES);
【讨论】:
以上是关于资源文件中的 Laravel REST API 路由问题的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 中的 REST API 订阅和交易(支付)端点