如何为这个三元关联设计REST APIi路由?

时间:2017-03-14 11:49:25

标签: rest api django-rest-framework restful-architecture

考虑以下数据库方案:

  • 用户(id,username,firstname,lastname,.....)
  • 组(id,name)// 3个条目管理员,审批者或发行者
  • 项目(id,name,launchdate,....)

与前三个实体有关的三元关联:

  • 成员资格(user_id,group_id,project_id)

我需要创建一个路径来更改特定项目中特定用户的组。

设计此路线的最佳RESTful架构是什么?

<ControlTemplate TargetType="{x:Type DataGridColumnHeader}"  >
    <Border x:Name="Border"
     Padding="2"
     Background="{TemplateBinding Background}"
     BorderBrush="{TemplateBinding BorderBrush}"
     BorderThickness="{TemplateBinding BorderThickness}">
        <Grid>
            <Grid x:Name="LayoutGrid"
                Visibility="Collapsed">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <StackPanel Orientation="Vertical">
                    <TextBlock Text="{Binding Content, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
                    <TextBox x:Name="txtId" Width="100"  />
                </StackPanel>
            </Grid>
            <ContentPresenter
                x:Name="TemplatedContent"
                Visibility="Visible"
                Content="{Binding Content, RelativeSource={RelativeSource Mode=TemplatedParent}}"
                ContentTemplate="{TemplateBinding ContentTemplate}"/>
        </Grid>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="ContentTemplate" Value="{x:Null}">
            <Setter Property="Visibility" TargetName="TemplatedContent" Value="Collapsed"/>
            <Setter Property="Visibility" TargetName="LayoutGrid" Value="Visible"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

1 个答案:

答案 0 :(得分:0)

  

设计这条路线的最佳RestfullArchitecture是什么。

可能通过公开会员资源

POST: /api/membership/
{
    'user': ...,
    'group': ...,
    'project': ...,
}

DELETE: /api/membership/{pk}

或者,您也可以创建一个真实的&#34;可以链接到项目组并且名称在&#34; administrator&#34;,&#34; approver&#34;或者&#34;发行人&#34;并将用户添加到他们。