为什么 Laravel-json-api 更新不起作用?
Why Laravel-json-api update does not work?
我使用 Laravel-json-api 框架创建了一个 API,没有控制器,因为框架完成了所有工作。
索引和读取工作正常,更新不工作。
我用Postman做更新,但是returns数据库里的记录,没有任何变化,也没有任何错误信息。
api.php 文件:
JsonApi::register('v1')->routes(function ($api) {
$api->resource('titre')->only('index', 'read', 'update');
});
要更新滴度记录,我使用/localhost/api/v1/titre/777777
我使用 Postman,右边 Content-Type : application/vnd.api+json
这是我邮递员的原始 body:
{
"data": {
"type": "titre",
"id": "777777",
"attributes": {
"ACTIF": "O",
},
"links": {
"self": "http://localhost/api/v1/titre/777777"
}
}
}
我希望 API 更新 ACTIF 属性,但结果是:
{
"data": {
"type": "titre",
"id": "777777",
"attributes": {
"ACTIF": "D",
},
"links": {
"self": "http://localhost/api/v1/titre/777777"
}
}
}
没有错误消息或任何错误消息,但是应该从 D 更新到 O 的 ACTIF 属性没有更新。
根据 Laravel-json-api 文档,这应该可行,对吧?
有人可以告诉我我的错误在哪里吗?
您所面临的情况可能是由多种原因造成的。请检查以下几点:
- 确保您使用
PATCH
HTTP 方法进行更新。 JSON:API 规格 explicitly requires PATCH
for updates.
- 如果您使用 Eloquent 适配器,请确保
ACTIF
属性是可填充的。 Laravel JSON API relies on mass assignment feature.
如果这不起作用,请在您的问题中包含一个 curl
请求,因为它有助于我们重现您的请求。
我使用 Laravel-json-api 框架创建了一个 API,没有控制器,因为框架完成了所有工作。
索引和读取工作正常,更新不工作。
我用Postman做更新,但是returns数据库里的记录,没有任何变化,也没有任何错误信息。
api.php 文件:
JsonApi::register('v1')->routes(function ($api) {
$api->resource('titre')->only('index', 'read', 'update');
});
要更新滴度记录,我使用/localhost/api/v1/titre/777777
我使用 Postman,右边 Content-Type : application/vnd.api+json
这是我邮递员的原始 body:
{
"data": {
"type": "titre",
"id": "777777",
"attributes": {
"ACTIF": "O",
},
"links": {
"self": "http://localhost/api/v1/titre/777777"
}
}
}
我希望 API 更新 ACTIF 属性,但结果是:
{
"data": {
"type": "titre",
"id": "777777",
"attributes": {
"ACTIF": "D",
},
"links": {
"self": "http://localhost/api/v1/titre/777777"
}
}
}
没有错误消息或任何错误消息,但是应该从 D 更新到 O 的 ACTIF 属性没有更新。
根据 Laravel-json-api 文档,这应该可行,对吧? 有人可以告诉我我的错误在哪里吗?
您所面临的情况可能是由多种原因造成的。请检查以下几点:
- 确保您使用
PATCH
HTTP 方法进行更新。 JSON:API 规格 explicitly requiresPATCH
for updates. - 如果您使用 Eloquent 适配器,请确保
ACTIF
属性是可填充的。 Laravel JSON API relies on mass assignment feature.
如果这不起作用,请在您的问题中包含一个 curl
请求,因为它有助于我们重现您的请求。