1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yaop-cedar

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 2.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:13 8cfda59

Алгоритм префиксного дерева маршрутизатора 😀

Компонент сеанса для cedar

Вся структура

cedar.NewRouter().Get(prefix,http.HandlerFunc,http.Handler)

Действует только один из них

Обновление

  • Новое правило маршрута
r.Get("/index/:id",func(w http.ResponseWriter, r *http.Request){
    fmt.Println(r.URL.Fragment) // <- используйте это, чтобы получить `id`
},nil)

=======

  • Промежуточное ПО Вы должны объявить его заранее
return false не продолжает return true может быть
r.Middleware("test", func(w http.ResponseWriter, r *http.Request) bool {
	http.Redirect(w, r, "/a/b/c", 302)
	return false
})
r.Get("/", func(writer http.ResponseWriter, request *http.Request) {
	writer.Write([]byte("hello"))
}, nil, "test") <- имя промежуточного ПО
  • Добавить динамический маршрут, использовать файл yaml для генерации маршрута, он должен выглядеть так:
- path: /dynamic/day
  view: /static/dynamic1.html
- path: /dynamic/day2
  view: /static/dynamic2.html
  • Добавьте новую функцию: глобальную функцию

она может записывать логи и т. д.

r.GlobalFunc("test", func(w http.ResponseWriter, r *http.Request) error {
	fmt.Println("global func run")
	return nil
})

Пример

Обычный

r := cedar.NewRouter()
r.Get("/",http.HandlerFunc(),nil)
r.Post("/",http.HandlerFunc(),nil)
r.Put("/",http.HandlerFunc(),nil)
r.Delete("/",http.HandlerFunc(),nil)
if err := http.ListenAndServe(":80", r); err != nil {
	log.Panicln(err)
}

Группа

r := cedar.NewRouter()
r.Group("/",func (group *cedar.Groups){
    group.Get("/",http.HandlerFunc(),nil)
    group.Group("/x",func(groups *cedar.Groups) {
        group.Get("/x",http.HandlerFunc(),nil)
    })
})
if err := http.ListenAndServe(":80", r); err != nil {
	log.Panicln(err)
}

RestFul

r := cedar.NewRestRouter(cedar.RestConfig{
		EntryPath: "yashua",
		ApiName:   "api",
        Pattern:"." `new*`

})
r.Get(api,fn,handler)
r.Post(api,fn,handler)
r.Put(api,fn,handler)
r.Delete(api,fn,handler)
r.Group(path,func(groups *cedar.Group{
    r.Get(api,fn,handler)
})

пример

r.Get("user.add", func(writer http.ResponseWriter, request *http.Request) {
 		_, _ = fmt.Fprintln(writer, "hello")
})

localhost/wechat?api=user.add Здесь есть «Pattern», вы можете использовать другие знаки препинания

Другие примеры

Использование

в следующий раз

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/yaop-cedar.git
git@api.gitlife.ru:oschina-mirror/yaop-cedar.git
oschina-mirror
yaop-cedar
yaop-cedar
master