RESTful:如何通过接口动态扩展路径

时间:2017-03-24 20:18:22

标签: java web-services rest jax-rs

我有以下界面

@Path("/v1")
public interface IV1Api {

}

@Path("/Accounts/{AccountId}")
public interface IAccountsInstanceApi extends IV1Api {

}

@Path("/Users")
public interface IUsersListApi extends IAccountsInstanceApi {
    @GET
    Json listUsers();

    @POST
    Json createUser();
}

public UsersListResource implements IUsersListApi {
    // ...
}

我希望我的用户列表资源路径为/v1/Accounts/123/Users,但它是/Users。我做错了什么?

1 个答案:

答案 0 :(得分:2)

很抱歉,但它不会像这样工作。您可以执行以下操作:

class Users::RegistrationsController < Devise::RegistrationsController
 before_action :configure_sign_up_params, only: [:create]
# before_action :configure_account_update_params, only: [:update]

  # POST /resource
  def create
    user_params     = sign_up_params[:user_params]
    entidade_params = sign_up_params[:entidade_params]

    if !(User.exists?(email: user_params[:email]) || Entidade.exists?(cnpj: entidade_params[:cnpj]))
      @entidade = Entidade.new(entidade_params)
      @entidade.data_validade = 30.days.from_now

      if @entidade.save
        @user = User.new(user_params)
        @user.entidade_id = @entidade.id
        if @user.save
          flash[:notice] = 'Usuario criado com sucesso.'
          redirect_to root_path
        end
      end
    end
  end
  protected

  # If you have extra params to permit, append them to the sanitizer.
  def configure_sign_up_params
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nome, :password, :password_confirmation, :cnpj, :razao_social, :nome_fantasia, :email, :tipo_entidade_id])
  end
end