Какие существуют веб-API-фреймворки для .NET? Как фрапи или виноград - PullRequest
2 голосов
/ 03 января 2011

В Ruby и PHP есть две интересные платформы, которые предоставляют инструменты для создания API.

Ruby: Grape https://github.com/intridea/grape/wiki

Php: Frapi http://getfrapi.com/

Кто-нибудь знает об эквивалентном обязательстве в .NET?

Например, в Grape вы можете создать класс ruby ​​следующим образом:

class MyAPI < Grape::API
    prefix 'api'

    get 'hello' do
        {:hello => 'world'}
    end
end

, который позволяет вам создаватьHTTP-запрос, подобный следующему:

GET /api/hello
{“hello”:”world”}

Это довольно мило.


РЕДАКТИРОВАТЬ


При отражении это выглядит так, как будтоСервис WCF Http Rest может быть очень похож на Frappi и Grape, что делает мой вопрос глупым.Но я все еще надеюсь собрать некоторые проекты, которые имеют инструменты или даже некоторые фреймворки, которые специфичны для создания API.

Sprache, (ответ ниже) кажется очень интересным.

Ответы [ 3 ]

1 голос
/ 03 января 2011

Зависит от того, что именно вы хотите сделать.Вы можете представить свой API через веб-службу JSON или XML HTTP, используя WCF .Вы также можете представить Rails-подобный API-интерфейс контроллера / действия через ASP.Net MVC .

1 голос
/ 04 января 2011

Kayak - это легкий сервер.Это позволяет вам легко создавать такие маршруты и ответы:

https://github.com/kayak/kayak

Из примеров:

using System;
using System.Collections.Generic;
using System.Net;
using System.Text;
using Kayak;

namespace KayakExamples
{
    class Simple
    {
        public static void Run()
        {
            var server = new DotNetServer();

            var pipe = server.Start();

            server.Host((env, respond, error) =>
                {
                    respond(new Tuple<string, IDictionary<string, IEnumerable<string>>, IEnumerable<object>>(
                            "200 OK",
                            new Dictionary<string, IEnumerable<string>>() 
                            {
                                { "Content-Type",  new string[] { "text/html" } }
                            },
                            new object[] { Encoding.ASCII.GetBytes("Hello world.") }
                        ));
                });

            Console.WriteLine("Listening on " + server.ListenEndPoint);
            Console.WriteLine("Press enter to exit.");
            Console.ReadLine();

            pipe.Dispose();
        }
    }
}
1 голос
/ 03 января 2011

Вот хорошая статья о внешних предметно-ориентированных языках :
http://nblumhardt.com/2010/01/building-an-external-dsl-in-c/

Вот инструмент, обсуждаемый в статье, Sprache :
http://code.google.com/p/sprache/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...