使用REST API创建索引

时间:2013-05-02 18:03:29

标签: apache api http rest curl

我正在尝试在特定命名空间下的集合中创建索引,但我不确定如何执行此操作。

我的资源将此作为HTTP示例:

POST /example/v1/index/{namespace}/{set}/{indexName}

并输入示例:

 {
 "fields": [
     { "indexField": "firstName", "indexReverseOrder": true },
     { "indexField": "lastName" }
 ],
 "options": {
     "isUnique": true
 }
}

这消耗

application/json;charset=UTF-8

但是当我把它写成

curl -X POST exampleurl.com/example/v1/index/example_namespace/example_set/example
set -d " {
 "fields": [
     { "indexField": "firstName", "indexReverseOrder": true },
     { "indexField": "lastName" }
 ],
 "options": {
     "isUnique": true
 } }" -H "Content-type : application/json;charset=UTF-8"

我收到以下HTTP状态代码

HTTP/1.1 415 Unsupported Media Type

任何人都可以向我解释发生了什么以及如何解决这个问题?另外,如果您没有足够的API信息来理解它,请告诉我,谢谢!

修改

作为某种引用,当我在命名空间中创建一个集合时,对于这个API我做了:

curl -X POST http://exampleurl.com/example/v1/store/example_namespace -d "example_set" -H "Content-type: application/json;charset=UTF-8" 

这是成功的。我认为索引与此类似,但显然不是。

2 个答案:

答案 0 :(得分:0)

错误是由于bash shell在json

之前错误解释了双引号
curl -X POST exampleurl.com/example/v1/index/example_namespace/example_set/example
set -d " {
 "fields": [
     { "indexField": "firstName", "indexReverseOrder": true },
     { "indexField": "lastName" }
 ],
 "options": {
 "isUnique": true
 } }" -H "Content-type : application/json;charset=UTF-8"

应该是:

curl -X POST exampleurl.com/example/v1/index/example_namespace/example_set/example
set -d ' {
 "fields": [
     { "indexField": "firstName", "indexReverseOrder": true },
     { "indexField": "lastName" }
 ],
 "options": {
 "isUnique": true
 } }' -H "Content-type : application/json;charset=UTF-8"

区别在于封装json的单引号。 bash shell在尝试执行命令时会出错。

答案 1 :(得分:-1)

您的媒体类型中有拼写错误:

application/json;charset=UTF=8

应该是:

application/json;charset=UTF-8