mirror of
https://github.com/kataras/iris.git
synced 2025-03-14 08:16:28 +01:00
Bet that many of you didn't know that Iris could handle regexp-based path parameters with ease :)
Former-commit-id: d2c5564cfb99fbea5d90106be0c6d5c505d293ab
This commit is contained in:
parent
efa3c8557a
commit
f780159afe
11
README.md
11
README.md
|
@ -127,7 +127,7 @@ Help this project to continue deliver awesome and unique features with the highe
|
||||||
|
|
||||||
### 🚀 Installation
|
### 🚀 Installation
|
||||||
|
|
||||||
The only requirement is the [Go Programming Language](https://golang.org/dl/), at least version 1.8 but **1.9** is highly recommended.
|
The only requirement is the [Go Programming Language](https://golang.org/dl/), at least version 1.9.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ go get -u github.com/kataras/iris
|
$ go get -u github.com/kataras/iris
|
||||||
|
@ -158,6 +158,13 @@ func main() {
|
||||||
|
|
||||||
// Method: GET
|
// Method: GET
|
||||||
// Resource: http://localhost:8080/user/42
|
// Resource: http://localhost:8080/user/42
|
||||||
|
//
|
||||||
|
// Need to use a custom regexp instead?
|
||||||
|
// Easy;
|
||||||
|
// Just mark the parameter's type to 'string'
|
||||||
|
// which accepts anything and make use of
|
||||||
|
// its `regexp` macro function, i.e:
|
||||||
|
// app.Get("/user/{id:string regexp(^[0-9]+$)}")
|
||||||
app.Get("/user/{id:long}", func(ctx iris.Context) {
|
app.Get("/user/{id:long}", func(ctx iris.Context) {
|
||||||
userID, _ := ctx.Params().GetInt64("id")
|
userID, _ := ctx.Params().GetInt64("id")
|
||||||
ctx.Writef("User ID: %d", userID)
|
ctx.Writef("User ID: %d", userID)
|
||||||
|
@ -168,6 +175,8 @@ func main() {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> See all available path parameter types at: https://github.com/kataras/iris/blob/master/_examples/routing/dynamic-path/main.go#L31
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<!-- file: ./views/hello.html -->
|
<!-- file: ./views/hello.html -->
|
||||||
<html>
|
<html>
|
||||||
|
|
|
@ -11,9 +11,19 @@ func main() {
|
||||||
app.Get("/", info)
|
app.Get("/", info)
|
||||||
|
|
||||||
// GET: http://localhost:8080/profile/anyusername
|
// GET: http://localhost:8080/profile/anyusername
|
||||||
|
//
|
||||||
|
// Want to use a custom regex expression instead?
|
||||||
|
// Easy: app.Get("/profile/{username:string regexp(^[a-zA-Z ]+$)}")
|
||||||
app.Get("/profile/{username:string}", info)
|
app.Get("/profile/{username:string}", info)
|
||||||
|
|
||||||
|
// If parameter type is missing then it's string which accepts anything,
|
||||||
|
// i.e: /{paramname} it's exactly the same as /{paramname:string}.
|
||||||
|
// The below is exactly the same as
|
||||||
|
// {username:string}
|
||||||
|
//
|
||||||
// GET: http://localhost:8080/profile/anyusername/backups/any/number/of/paths/here
|
// GET: http://localhost:8080/profile/anyusername/backups/any/number/of/paths/here
|
||||||
app.Get("/profile/{username:string}/backups/{filepath:path}", info)
|
app.Get("/profile/{username}/backups/{filepath:path}", info)
|
||||||
|
|
||||||
// Favicon
|
// Favicon
|
||||||
|
|
||||||
// GET: http://localhost:8080/favicon.ico
|
// GET: http://localhost:8080/favicon.ico
|
||||||
|
|
|
@ -152,7 +152,7 @@ func main() {
|
||||||
7. If file is sent to the page, store the file object to a temporary "file" variable.
|
7. If file is sent to the page, store the file object to a temporary "file" variable.
|
||||||
8. Move uploaded file to destination based on the uploadsDir+uploaded file's name.
|
8. Move uploaded file to destination based on the uploadsDir+uploaded file's name.
|
||||||
|
|
||||||
### Runing the server
|
### Running the server
|
||||||
|
|
||||||
Open the terminal at the current project's folder and execute:
|
Open the terminal at the current project's folder and execute:
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ func (f *uploadedFiles) scan(dir string) {
|
||||||
f.dir = dir
|
f.dir = dir
|
||||||
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
||||||
|
|
||||||
// if it's directory or a thumbnail we saved ealier, skip it.
|
// if it's directory or a thumbnail we saved earlier, skip it.
|
||||||
if info.IsDir() || strings.HasPrefix(info.Name(), "thumbnail_") {
|
if info.IsDir() || strings.HasPrefix(info.Name(), "thumbnail_") {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -283,7 +283,7 @@ Copy content below to "./views/upload.html". We will go through modifications in
|
||||||
4. Retrieve files details from the new "/uploads" via ajax.
|
4. Retrieve files details from the new "/uploads" via ajax.
|
||||||
5. Create mockFile using values from server. mockFile is simply JavaScript objects with properties of name and size. Then we call Dropzone's **addedfile** and **thumbnail** functions explicitly to put existing files to Dropzone upload area and generate its thumbnail.
|
5. Create mockFile using values from server. mockFile is simply JavaScript objects with properties of name and size. Then we call Dropzone's **addedfile** and **thumbnail** functions explicitly to put existing files to Dropzone upload area and generate its thumbnail.
|
||||||
|
|
||||||
### Runing the server
|
### Running the server
|
||||||
|
|
||||||
Open the terminal at the current project's folder and execute:
|
Open the terminal at the current project's folder and execute:
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ func (f *uploadedFiles) scan(dir string) {
|
||||||
f.dir = dir
|
f.dir = dir
|
||||||
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
|
||||||
|
|
||||||
// if it's directory or a thumbnail we saved ealier, skip it.
|
// if it's directory or a thumbnail we saved earlier, skip it.
|
||||||
if info.IsDir() || strings.HasPrefix(info.Name(), "thumbnail_") {
|
if info.IsDir() || strings.HasPrefix(info.Name(), "thumbnail_") {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
6
doc.go
6
doc.go
|
@ -110,6 +110,12 @@ Example code:
|
||||||
// Method GET: http://localhost:8080/profile/anytypeofstring
|
// Method GET: http://localhost:8080/profile/anytypeofstring
|
||||||
app.Get("/profile/{username:string}", profileByUsername)
|
app.Get("/profile/{username:string}", profileByUsername)
|
||||||
|
|
||||||
|
// Want to use a custom regex expression instead?
|
||||||
|
// Easy: app.Get("/profile/{username:string regexp(^[a-zA-Z ]+$)}")
|
||||||
|
//
|
||||||
|
// If parameter type is missing then it's string which accepts anything,
|
||||||
|
// i.e: /{paramname} it's exactly the same as /{paramname:string}.
|
||||||
|
|
||||||
usersRoutes := app.Party("/users", logThisMiddleware)
|
usersRoutes := app.Party("/users", logThisMiddleware)
|
||||||
{
|
{
|
||||||
// Method GET: http://localhost:8080/users/42
|
// Method GET: http://localhost:8080/users/42
|
||||||
|
|
Loading…
Reference in New Issue
Block a user