资源文件中的 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 订阅和交易(支付)端点

laravel rest api将文件上传到服务器

Laravel API 资源中的多级关系

Laravel REST API - 无限循环

Laravel 7 - 使用 REST API 而不是数据库

如何在 Laravel REST API 中使用 PUT 方法更新图像?