在正确使用REST时,当请求成功但有警告消息时,什么是适合的HTTP状态代码?
在我们的情况下; 客户端是在浏览器上运行的Web应用程 我们更喜欢以下状态代码:
但是,当请求成功处理时,我们无法确定应使用哪个状态代码,但是需要向客户端发送一些信息或警告消息?
Ember : 1.13.3
Ember Data : 1.13.5
jQuery : 1.11.3
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用来自我的EmberJS客户端的ember-data向我的服务器发送JSON有效负载.我想在保存项目时将整个对象图发送到服务器,因为我不想发送多个请求.我不介意发送多个请求,但我担心如果其中一个请求在中间失败并且服务器上的数据不正确会发生什么.
我想使用JSONAPI(http://jsonapi.org/format/#document-compound-documents),因为它正在成为Ember中的默认适配器.此外,还有一些C#库可以处理这种格式,因此我认为它非常简单.但是,在阅读规范之后,如果没有id,我似乎无法嵌入对象.即使我{ async: false, embedded: 'always' })在DS.attr上指定,EmberJS也不会将子对象附加到JSON .
我的问题是:如果应用程序的使用方式是在客户端创建对象图,那么如何使用JSONAPI格式将整个对象图发送到服务器?我是否必须在客户端生成ID以满足JSONAPI标准?然后,一旦他们到达服务器,只需忽略它们,以便用ORM生成的id保存它们?
这是我的labelGroup模型:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
labels: DS.hasMany('label-model', { async: false, embedded: 'always' })
});
Run Code Online (Sandbox Code Playgroud)
这是我的项目模型:
import DS from 'ember-data';
export default DS.Model.extend(DS.EmbeddedRecordsMixin, {
name: DS.attr('string'),
labelGroups: DS.hasMany('labelGroup', { async: false, embedded: 'always'})
});
Run Code Online (Sandbox Code Playgroud)
这是我在项目上执行save()后得到的POST:
{
"data":{
"attributes":{"name":"Project"},
"relationships":{
"label-groups":{
"data":[
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null},
{"type":"label-groups","id":null}
]
}
},
"type":"label-projects"
} …Run Code Online (Sandbox Code Playgroud) 如何使用WP REST API(v1或v2)获取特定自定义帖子类型的所有帖子?我对此很新,并试图了解如何做到这一点.
我目前正在使用WP REST API v2并设法使用此方法获取所有帖子类型的列表
http://domain.com/wp-json/wp/v2/types
Run Code Online (Sandbox Code Playgroud)
然后设法得到我感兴趣的帖子类型
http://domain.com/wp-json/wp/v2/types/the-icons-update
Run Code Online (Sandbox Code Playgroud)
如何获取该特定内容类型的所有帖子?
我试过了
http://domain.com/wp-json/wp/v2/posts?filter[post_type]=the-icons-update
Run Code Online (Sandbox Code Playgroud)
但它返回一个空数组(我想它会返回默认帖子,在我的网站上只有我试图检索的自定义帖子类型中的帖子).
我是如何注册帖子类型的?
function custom_post_type() {
$labels = array(
'name' => _x( 'The Icons Update', 'post type general name' ),
'singular_name' => _x( 'The Icons Update', 'post type singular name' ),
'add_new' => _x( 'Add Page', 'magazine' ),
'add_new_item' => __( 'Add New Page' ),
'edit_item' => __( 'Edit Page' ),
'new_item' => __( 'New Page' ),
'all_items' => __( 'All Pages' ),
'view_item' => __( 'View Page' …Run Code Online (Sandbox Code Playgroud) 我正在使用以下技术/方法实现REST API:
我想实现身份验证端点,它应该在JSONAPI格式的POST请求中接收用户名和密码,并以JSONAPI格式返回JWT令牌.但我发现有一些矛盾不允许我100%RESTful:
让我们命名端点/tokens,因为它实际上创建了令牌.响应也是类型的资源tokens,例如:
{
"data": {
"type": "tokens",
"attributes": {
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEifQ.ivJ5P23wqVo3w31flg3aOu7er--Ijght_RrBf_MuqsU",
}
}
}
Run Code Online (Sandbox Code Playgroud)
但请求怎么样?username并且password是用户的属性,但应将它们发送到/tokens端点.如果我将users资源发送到/tokens端点,那就没有多大意义了.
有没有办法解决这个问题,遵循JSONAPI并保持API的意义?
我的团队最近采用了json api惯例.在api排序的文档中没有解决.
然而,它们确实在推荐页面中解决了过滤问题,但在我看来,排序不是过滤的一部分,因为过滤用于减少集合,而排序用于重新排序集合.
鉴于json api惯例,我想知道:
我使用来自jsonapi.org的JSONAPI规范,然后我使用JsonApiSerializer来完成 JSONAPI 规范,所以我的响应和请求正文如下所示:
{
"data": {
"type": "articles",
"id": "stringId",
"attributes": {
"title": "JSON:API paints my bikeshed!"
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个实体“文章”,它看起来像:
public class Article
{
public string Id { get; set; }
public string title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用Swashbuckle Swagger来记录我的 API,但在Swagger UI 中,我的示例请求和响应正文如下所示:
{
"id": "string",
"title": "string"
}
Run Code Online (Sandbox Code Playgroud)
我认为 swagger 忽略了JsonApiSerializer,有没有办法更改 swagger 的默认序列化程序并使用我自己的序列化程序?
我的 Startup.cs 看起来像:
public class Startup
{
public Startup(IConfiguration configuration)
{
this.Configuration = …Run Code Online (Sandbox Code Playgroud) 我正在使用Grape on Rails 4.2构建API.这是GitHub上的回购链接.
在前端,我有一个用EmberJS构建的JavaScript应用程序.这里也是GitHub上回购的链接.
我已经更新了以下宝石,以便我可以按照JSON API标准格式化我的API的响应,这似乎需要更新到Ember 1.13,然后更新到Ember 2.0.
gem "active_model_serializers", '0.10.0.rc2'
gem "grape"
gem "grape-active_model_serializers", :git => 'https://github.com/jrhe/grape-active_model_serializers.git'
Run Code Online (Sandbox Code Playgroud)
之后,当我调用API时出现以下错误:IOError:未打开进行读取
根据我在这里和那里收集的信息,我怀疑这与我格式化JSON的方式存在冲突.
在default.rb中,当我对此行进行注释时,继承所有API控制器的文件:
formatter :json, Grape::Formatter::ActiveModelSerializers
Run Code Online (Sandbox Code Playgroud)
我不再有任何错误,但显然响应没有序列化.
我的问题是:
如果您需要更多信息,请与我们联系.
在此先感谢您的帮助.
我正在开发符合 JSON API 的 REST api。某些端点包含某些用户应限制(只读或不可用)的字段。
构建 api 以允许某些用户访问某些字段而其他用户不能访问的最佳方法是什么?“最好”,我的意思是:
我正在考虑以下选项,每个选项都有其关注点/问题。对于任何其他解决方案,我将不胜感激!
注意:我已经构建了一个单独的权限架构,以便客户端可以在发出任何请求之前根据顶级端点确定用户拥有哪些 …
我试图使用gapi来上传图片到谷歌云存储.目前的代码,我是
<script src="https://apis.google.com/js/api.js"></script>
<script type="text/javascript">
var imgData = null;
function getImage() {
navigator.camera.getPicture(onSuccess, onFailure, {
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
});
function onSuccess(imageURI) {
imgData = encodeImageUri(imageURI);
var contentLen = imgData.length;
gapi.load('client', start);
}
function onFailure(message) {
alert("Get image failed: " + message);
}
}
function start() {
// 2. Initialize the JavaScript client library.
console.log('firing google storage api');
gapi.client.init({
'apiKey': 'XXX-XX'
}).then(function() {
// 3. Initialize and make the API request.
console.log('api initialized');
var request = …Run Code Online (Sandbox Code Playgroud) javascript client-library google-cloud-storage json-api gapi
我有根据jsonapi.org指南构建的 HTTP 请求负载:
{
"data": {
"type": "employee",
"attributes": {
"firstName": "John",
"lastName": "Doe",
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有这个有效负载的OpenApi规范 (yaml):
employee:
type: object
required: [data]
properties:
data:
type: object
properties:
type:
type: string
enum: [employee]
attributes:
type: object
required: [firstName, lastName]
properties:
firstName:
type: string
example: 'John'
lastName:
type: string
example: 'Doe'
Run Code Online (Sandbox Code Playgroud)
我想要的是根据规范(来自 Ruby/Rails)验证有效负载。
存在openapi3_parser gem,但它似乎只能验证规范,而不能验证实际的有效负载。
然后,还有jsonapi.org 有效负载反序列化器,但它们似乎根本不关心 OpenApi 正式规范。
我使用 OpenApi 来描述有效负载,因为我通过 Swagger 免费获得 http API 文档。
json-api ×10
ember.js ×2
javascript ×2
rest ×2
api ×1
asp.net-core ×1
c# ×1
ember-data ×1
gapi ×1
grape-api ×1
http-status ×1
json ×1
jwt ×1
openapi ×1
php ×1
ruby ×1
swagger-ui ×1
swashbuckle ×1
wordpress ×1