Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-REST-使用友好的ID存储数据并检索数据_Sql_Rest - Fatal编程技术网

SQL-REST-使用友好的ID存储数据并检索数据

SQL-REST-使用友好的ID存储数据并检索数据,sql,rest,Sql,Rest,更新日期:2018年6月9日 我的模型如下所示: public class Activity { public int Id { get; set; } public List<Additive> Additives { get; set; } } public class Additive { public int Id { get; set; } public int ActivityId { get; set; } public A

更新日期:2018年6月9日

我的模型如下所示:

public class Activity
{
    public int Id { get; set; }

    public List<Additive> Additives { get; set; }
}

public class Additive
{
    public int Id { get; set; }
    public int ActivityId { get; set; }

    public Activity Activity { get; set; }
}  
 Api/activity/1/objects/2
我可以从数组中添加或删除对象。
现在,我的问题是,如果我想用这样的url访问它们:

public class Activity
{
    public int Id { get; set; }

    public List<Additive> Additives { get; set; }
}

public class Additive
{
    public int Id { get; set; }
    public int ActivityId { get; set; }

    public Activity Activity { get; set; }
}  
 Api/activity/1/objects/2
告诉MySQL这个对象是我列表中的第2个对象的正确方法是什么


或者,我应该在后端选择Act1的所有对象,并对它们进行筛选,以仅检索第2个对象。

REST服务中的资源具有稳定的URL是非常重要的。所以,要想弄清楚什么是“第二”,你真的需要考虑在列表中排名第二意味着什么

你在点什么东西吗?如果是这样的话,使用这种结构可能是个坏主意,因为添加一个新条目可能会改变顺序,而以前的“第二个”可能在将来不再存在


您可以做的最好的事情是为这些条目添加某种新的id,这样通过uri访问特定资源将始终返回该资源(或404,等等)。

我终于找到了我想要的答案。

这是MyISAM引擎的一项功能

对于MyISAM和BDB表,可以在多列索引中的辅助列上指定自动增量。在这种情况下,自动增量列的生成值计算为MAX(自动增量列)+1,其中prefix=给定前缀。当您想要将数据放入有序的组中时,这非常有用

在我的例子中,这个查询完成了任务

CREATE TABLE additive (
    id INT NOT NULL AUTO_INCREMENT,
    activity_id INT NOT NULL,
    other_column VARCHAR(30) NOT NULL,
    PRIMARY KEY (activity_id, id)
) ENGINE=MyISAM;

请为表结构添加示例数据您的意思是通过特定id访问资源。那么
api/activity/1/additional/1
api/additional/1
之间就没有区别了,对吗?但是使用
api/activity/1/addition
将返回与活动相关的添加剂列表及其各自的ID。如果您希望它是不同的,则会有差异。作为人类,我可以看到
/activity/1/additional/1
属于
/activity/1
,我可以手动操作它以获取更多信息。我认为这是一个很好的好处。