假设我想创建一个类似于以下内容的XML响应:
<?xml version="1.0" encoding="utf?8"?>
<product xmlns="urn:com.acme.prods" xmlns:atom="http://www.w3.org/2005/xlink">
<id>1234</id>
<name>Red Stapler</name>
<price currency="EUR">3.14</price>
<atom:link rel="payment" type="application/com.acme.shop+xml"
href="http://acme.com/products/1234/payment" />
</product>
Run Code Online (Sandbox Code Playgroud)
给定一个类似于以下内容的域模型:
<?php
// Product.php
namespace Acme\Bundle\ProductBundle\Entity;
use Acme\Bundle\ProductBundle\Money\Money;
class Product
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $name;
/**
* @var Money
*/
private $price;
[..]
}
Run Code Online (Sandbox Code Playgroud)
和金钱类一样:
<?php
// Money.php
namespace Acme\Bundle\ProductBundle\Money;
class Money
{
/**
* @var string
*/
private $currency;
/**
*
*/
private $amount;
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题.创建如下所示的响应非常简单
<?xml version="1.0" encoding="utf?8"?>
<product>
<id>1234</id> …Run Code Online (Sandbox Code Playgroud) 根据设计RESTful接口的优秀演示,实现版本控制的首选方法是使用Accept-header,使用类似于:
GET /products HTTP/1.1
Host: example.com
Accept: application/vnd.com.myservice.v2+xml
Run Code Online (Sandbox Code Playgroud)
这适用于XML Content-Types,但是可以使用相同的方案对JSON等效的版本进行版本控制吗?
即,是否有可能要求:
GET /products HTTP/1.1
Host: example.com
Accept: application/vnd.com.myservice.v2+json
Run Code Online (Sandbox Code Playgroud)
响应将是这样的:
HTTP/1.1 200 OK
Content-Type: application/vnd.com.myservice.v2+xml; charset=UTF-8
Allow: GET, POST
<?xml version="1.0" encoding="utf-8"?>
<products xmlns="urn:com.example.products"
xmlns:xl="http://www.w3.org/1999/xlink">
<product id="1234" xl:type="simple"
xl:href="http://example.com/products/1234">
<name>Red Stapler</name>
<price currency="EUR">3.14</price>
<availability>false</availability>
</product>
</products>
Run Code Online (Sandbox Code Playgroud)
和JSON等价物(有点):
HTTP/1.1 200 OK
Content-Type: application/vnd.com.myservice.v2+json; charset=UTF-8
Allow: GET, POST
[
{
id: "1234",
links: [
{
rel: "self",
href: "http://example.com/products/1234"
}
],
name: "Red Stapler",
price: {
currency: "EUR",
value: …Run Code Online (Sandbox Code Playgroud) 我刚刚将我们的Sphinx服务器从1.10-beta更新到2.0.6版本,现在我遇到了一些问题searchd.以前我们可以searchd通过指定两个不同的配置文件来运行两个彼此相邻的实例,即:
searchd --config /etc/sphinx/sphinx.conf
searchd --config /etc/sphinx/sphinx.staging.conf
Run Code Online (Sandbox Code Playgroud)
sphinx.conf监听9306:mysql41,并且9312,当sphinx.staging.conf侦听9307:mysql41和时9313.
然而,在我们更新到2.0.6之后,永远不会启动第二个实例.或者更确切地说..输出使它看起来像它启动,并创建了一个pid文件等.但由于某种原因,只有第一个searchd实例继续运行,第二个似乎立即关闭.因此,当尝试运行searchd --config /etc/sphinx/sphinx.conf两次(如果这是第一个开始)抱怨pid文件正在使用,尝试运行searchd --config /etc/sphinx/sphinx.staging.conf(如果这是第二个启动的实例)"一次又一次"启动守护进程,只有没有新的进程已创建..请注意,如果我在第一次创建进程时切换这些命令,那么sphinx.conf实例并未真正启动.
我已检查并重新检查,这些端口仅用于searchd.
有谁知道我能做什么/下一步尝试?我在ubuntu 10.04 LTS上从源代码安装了它:
./configure --prefix /etc/sphinx --with-mysql --enable-id64 --with-libstemmer
make -j4 install
Run Code Online (Sandbox Code Playgroud) hateoas ×2
content-type ×1
css ×1
gradient ×1
http-1.1 ×1
hypermedia ×1
json ×1
rest ×1
sphinx ×1
symfony ×1
symfony-2.1 ×1
ubuntu-10.04 ×1