任务
我有一个DataMapper类,用于为我的web的移动客户端将数据映射到自定义表示。
public class DataMapper
{
public static string Role { get; set; }
public static RoleReturnModel Create(IdentityRole appRole)
{
return new RoleReturnModel
{
Id = appRole.Id,
我正在编写一个控制器操作,可以由两组用户中的一组访问;每个组都有自己的AuthorizationFilterAttribute实现,其中包含定义如何授权组的自定义逻辑。我希望能够使用条件OR来确定至少满足了一个属性授权筛选器。
我希望我能做这样的事情:
public class ConfigController : ApiController
{
[AdminAuthorize || DealRoomAuthorizeAttribute]
public IHttpActionResult GetBlah()
{
r
我正在寻求一些建设性的建议。我正在尝试映射多个控制器端点如何彼此交互,这样我就不会最终在多个控制器中编写相同的代码。请允许我用一个简单的看板例子来说明。
我在这里考虑两个(或三个)控制器: BoardController、CardController、SubCardController (未决定)。现在,让我们忽略卡片可以被组织成列表的事实,因为我们将在板和卡控制器之间有一个ListController。
板卡控制器:
public class BoardController : ApiController {
// among basic CRUD methods I have a
此站点只查询数据库-没有CRUD。
我有一个从ApiController调用的Service,ApiController方法是由我的ApiController请求调用的。
我的问题是,在我的服务中,它变得相当毛茸茸。下面是方法存根的几个例子。我有更多的方法。然后它甚至变得毛茸茸的,因为我必须包装我的APIController中的每一个服务呼叫。
服务
public IEnumerable<CodedValue> GetStreetSuffix()
{
using (var s = new SqlConnection(this.connection))
我有两个控制器
DefaultController
class DefaultController extends Controller
{
public function indexAction()
{
ApiController
class ApiController extends Controller
{
public function getCategoryAction()
{
现在我想从我的DefaultController调用getCategoryAction。
这是不可能的吗?还是我可以做到?
我正在尝试找出在我的平台上使用WebAPI和实体框架执行操作的最佳方式。
现在,我在每次请求时创建一个新的连接:在每个控制器中,都有一个对象为每个方法实例化和释放。
public class SchedulerController : ApiController
{
private ApplicationDbContext db = new ApplicationDbContext();
protected override void Dispose(bool disposing)
{
if (disposing)
db.Dis
我正在尝试在我的StudentController中实现ApiController,但问题是我也必须实现BaseController。
当我这样做的时候,它不起作用
public class StudentController : BaseController, ApiController
我该怎么做呢?
我在用Rspec测试外部实例变量时遇到了问题。虽然在StackOverflow上也有一些类似的问题,但我还没有找到在GET请求中测试它的解决方案(因为这是针对API的)。
我有一个ApiController方法,它可以执行以下操作:
class ApiController < ApplicationController
...
def auth(token)
@user = User.find_by_token(token)
...
end
然后,我有一个请求规范,如下所示:
describe 'GET /v1/friends' do
it
在ASP.NET中是否有可能在包含路由参数的ApiController上有一个RoutePrefix属性?
[RoutePrefix("api/parent/{pid}/child")]
public class ChildController : ApiController
{
[Route("")]
public HttpResponseMessage Get(object pid)
{
//...
}
[Route("{cid}"]
public HttpResponseMe
在WebApi中,我有一个希望能够重定向到另一个ApiController操作的控制器操作。我使用定制的AuthorizeAttribute (CustomAuthorizaton)属性来修饰这些方法,因此任何重定向都必须通过这些传入的安全过滤器。
下面是一个例子:
public class SomeController : ApiController
{
[CustomAuthorization("Foo")]
[System.Web.Http.HttpGet]
public CustomResponse SomeMethod(int arg1, i
我对asp.net web-api有一个设计问题,并且想知道如何解决这个问题。
public abstract class BaseApiController<TEntity> : ApiController where TEntity : Entity
{
protected string GetUsername()
{
return Utilities.GetUsername(Request.Headers.Authorization);
}
//some other code
}
public class Stake
因此,我有一个web客户端,ShazamClient,我想使用它从jQuery获取数据,并将数据发布到远程web,ShazamService。起初,我尝试POSTing直接在jQuery中使用ShazamService,但是遇到了与CORS相关的错误,而在ShazamService上没有启用CORS。因此,为了解决这个问题,我想直接将请求从Controller或ApiController of ShazamClient转发到ShazamService中的相应方法调用。所以我基本上想:
public class ShazamClientController : ApiController //
因此,问题是为什么在使用块时使用HttpClient是错误的,但在WebApi上下文中呢?
我一直在读这篇文章,。在它中,我们有以下示例:
public static async Task<JObject> GetJsonAsync(Uri uri)
{
// (real-world code shouldn't use HttpClient in a using block; this is just example code)
using (var client = new HttpClient())
{
var jsonString = await
ASP.NET WebAPI非常有能力发现外部DLL中的ApiController类,即使这些DLL没有被引用。例如,我可能有一个MyWebApiProject,它有一组ApiControllers。然后,我可以创建一个完全独立的项目,名为MyApiProjectPlugin,它还包含ApiController类。我已经能够将MyApiProjectPlugin.dll文件添加到具有第一个MyApiProject.dll的bin文件夹中,并且原始项目将发现插件项目中的所有控制器。我真的很喜欢这种能力。
但是,我想要做的是能够将插件项目添加到bin文件夹中的子目录中。类似于bin/plugins
我到处寻找解决方案,问题是我需要在我的api控制器中记录当前用户的id。在api控制器中,我将中间件api放入其中。下面是ApiController.php的代码:
public function __construct()
{
$this->middleware('auth:api');
}
public function createcorso(Request $request)
{
$corsoscii = new CorsoScii();
$corsoscii->tipo = $request->input('ti
我正在使用一个操作过滤器来处理ApiController方法中的异常。
我的方法使用return Ok(object)以JSON的形式返回结果。但是,当我想要在Action Filter中处理异常以处理ApiController方法的异常时,它不能访问Ok方法来将对象序列化为JSON,因为它是ApiController中的一个受保护的方法。以下是我的操作过滤器的示例:
public class WebServiceExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException(Exception
我有一个在本地运行良好的API,当我将它移到活动环境时,它就没有了。
受影响控制器的主POST操作返回:
NotFound
通过测试,我得到了回报:
"Message": "No HTTP resource was found that matches the request URI
奇怪的是,当我上传一个具有与主控制器中使用的测试操作相同的testController时,我从API中得到了适当的响应。
这是一个很好的测试:
public class TestController : ApiController
{
[AllowAnonymous]
[
当我将app/Http/routes.php,添加Route::resource('api', 'ApiController');时,会得到以下错误:
BadMethodCallException方法索引不存在。
我的api控制器如下所示:
<?php
class ApiController extends BaseController
{
public function getIndex()
{
echo "No Access";
}
我有以下ApiController,它通过before_action过滤器处理授权:
class ApiController < ApplicationController
before_action :restrict_access
private
def restrict_access
authenticate_or_request_with_http_token do |token, options|
ApiKey.exists?(access_token: token)
end
end
end
这个很好用。
现在,我有了一个来自Ap
我肯定遗漏了一些东西,因为大多数关于415错误的问题都是指POST请求。在本例中,这是一个非常简单的GET请求,当我枚举所有操作参数时,该请求可以工作,但是如果我创建一个简单的DTO来包含所有这些,我就会收到415个错误。
我用调用api
这样做是可行的:
[ApiController]
public class SomeController : ControllerBase
{
[Route("Test")]
public SomeResponse GetSomeResponse(string field1, int f
我有一个ApiController,它通过HTTP的状态代码307重定向POST请求。它只使用来自标头的信息来完成此操作,因此此操作不需要请求的主体。这一行动相当于:
public HttpResponseMessage Post() {
var url;
// Some logic to construct the URL
var response = new HttpResponseMessage(HttpStatusCode.TemporaryRedirect);
response.Headers.Location = new System.Uri(url