如何启动 ServiceStack?

How to start on ServiceStack?

你能帮我指出我应该如何开始吗:

我是 API 的新手,我目前正在研究 ASP.NET Core 3.1 MVC 与 Microsoft SQL 服务器的配对。我有要求我应该使用 API (ServiceStack) 用于某种方法。

我的问题是:

我应该从哪里开始,我很困惑。

我在 youtube 上查过,但没有与我的情况类似的情况,它们都使用内存。 欢迎提出建议!

Create your first Web Service 开始浏览 ServiceStack 的入门部分。

在您的 AppHost 中配置 OrmLite

要配置 OrmLite,请从您的 IOC 中的 OrmLite Installation tells you which package to download whilst the OrmLite Getting Started docs lists all the available SQL Server Dialects which you'd use to configure the OrmLiteConnectionFactory 开始。

例如对于 SQL 服务器 2012:

public class AppHost : AppHostBase
{
    public AppHost() : base("MyApp", typeof(MyServices).Assembly) { }

    // Configure your ServiceStack AppHost and App dependencies
    public override void Configure(Container container)
    {
         container.AddSingleton<IDbConnectionFactory>(
            new OrmLiteConnectionFactory(connectionString, 
            SqlServer2012Dialect.Provider));
    }
}

在服务中使用 OrmLite

然后在您的 ServiceStack 服务中,您可以通过 base.Db 访问您的 ADO .NET 数据库连接,您可以将其与 OrmLite's extension methods 一起使用,例如:

public class MyServices : Service
{
    public object Any(GetAllItems request) => new GetAllItemsResponse {
        Results = Db.Select<Item>()
    };
}

Checkout the OrmLite APIs docs for different APIs to Select, Insert, Update & Delete Data.

使用 AutoQuery

创建轻松的 RDBMS APIs

作为新手,我强烈建议您使用 AutoQuery RDBMS,因为它可以让您仅使用请求 DTO 创建 RDBMS API。

您可以通过在 ServiceStack.Server" NuGet 包中添加 AutoQueryFeature 插件来启用它:

public override void Configure(Container container)
{
    Plugins.Add(new AutoQueryFeature { MaxLimit = 100 });
}

然后您可以为您的 Item table 创建一个自动查询 API,只需:

[Route("/items")]
public class QueryItems : QueryDb<Item> {}

现在可以让您使用任何 AutoQuery's implicit conventions 查询每个项目列,例如通过完全匹配:

/items?Id=1

或通过任何查询属性:

/items?NameStartsWith=foo

正在创建类型化请求 DTO

一旦您知道您的客户端应用程序需要哪些查询 API,我建议您将它们作为强类型属性添加到您的请求 DTO 中,例如:

[Route("/items")]
public class QueryItems : QueryDb<Item> 
{
    public int? Id { get; set; }
    public string NameStartsWith { get; set; }
}

来自服务客户的调用

这将启用 end-to-end 类型 API 使用任何 ServiceStack's Service Clients,例如:

var client = new JsonServiceClient(BaseUrl);

var response = client.Get(new QueryItems { NameStartsWith = "foo" });

response.PrintDump(); // quickly view results in Console

还有 AutoQuery CRUD APIs 可让您创建 API 仅使用请求 DTO 来修改 RDBMS table。