Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 13 14:27

    kataras on master

    minor (compare)

  • Oct 13 13:33

    kataras on v12.2.0-alpha4

    (compare)

  • Oct 13 13:22

    kataras on master

    add new ':email' path parameter… (compare)

  • Oct 13 13:22

    kataras on master

    (compare)

  • Sep 22 12:04

    kataras on v12.2.0-alpha3

    (compare)

  • Sep 22 11:59

    kataras on master

    v12.2.0-alpha3 (compare)

  • Sep 22 11:50

    kataras on master

    minor (compare)

  • Sep 22 11:28

    kataras on master

    replace optimized json encoder … (compare)

  • Sep 14 19:10

    kataras on master

    update dependencies (compare)

  • Sep 14 18:50

    kataras on master

    minor (compare)

  • Sep 14 18:40

    kataras on master

    Create SECURITY.md (compare)

  • Sep 14 18:24

    kataras on master

    Create codeql-analysis.yml (compare)

  • Sep 14 18:22

    kataras on master

    fix: add go.mod and go.sum to a… Merge pull request #1800 from n… (compare)

  • Sep 14 18:22
    kataras closed #1800
  • Sep 14 18:21

    kataras on master

    fix macos panic dereferencing w… remove extra newline Merge pull request #1805 from K… (compare)

  • Sep 14 18:21
    kataras closed #1805
  • Sep 14 18:19
    kataras closed #1813
  • Sep 07 15:28

    kataras on master

    update the kataras/tunnel depen… (compare)

  • Sep 02 12:44
    renxiaotu review_requested #1813
  • Sep 02 12:44
    renxiaotu opened #1813
Massimiliano Bertinetti
@eclecticlly

On a CMS sort of site I think you have a database entry for every pages and one or more template types associated and generated dinamically.

Another solution is to generate a static site based on Hugo and Netlify CMS, that for simple CMS is what I use today. It’s faster and simple to deploy.

vuhoanglam
@vuhoanglam
i want to create my own cms for researching purposes, and for better understanding Iris. I still think, iris should provide more built in events in the application lifecycle
Gerasimos (Makis) Maropoulos
@kataras

Hello @vuhoanglam,

The ctx.View returns an error. This error is always logged to your terminal screen (or log file) if the logger is not disabled.

If the application is running under debug log level (app.Logger().SetLevel("debug")) then the client will receive the error text too but if not (default behavior) then it just returns the error the caller, so you can catch it.

Example Code:

<!-- ./view/fallback.html -->
<h1>Fallback view of {{.ViewRequested}}</h1>
package main

import (
    "github.com/kataras/iris/v12"
)

const defaultViewName = "fallback"

func main() {
    app := iris.New()
    app.RegisterView(iris.HTML("./view", ".html"))
    app.Get("/", index)

    app.Listen(":8080")
}

func index(ctx iris.Context) {
    var viewName = "blabla"

    err := ctx.View(viewName)
    if err != nil {
        ctx.View(defaultViewName, iris.Map{
            "ViewRequested": viewName,
        })
    }
}

I assume you just want to render something as 'fallback' - that you can do already as shown above.

Now, if you are asking if you can disable this log line of "template x does not exist" then it's a different thing. We can create a config field in order to disable that message :)

Gerasimos (Makis) Maropoulos
@kataras
I can also put a feature of "fallback" view AND layouts of non-exist templates per handler or per Party and if that exists then the error log will be not shown up, otherwise it will, I think that's a better solution, do you agree?
Gerasimos (Makis) Maropoulos
@kataras
OK it's done @vuhoanglam, take a look at the example: https://github.com/kataras/iris/tree/master/_examples/view/fallback
vuhoanglam
@vuhoanglam
Amazing!! i ll send you a starbucks via donation form :D
Gerasimos (Makis) Maropoulos
@kataras
@vuhoanglam Thanks but I think you already did :)
vuhoanglam
@vuhoanglam
@kataras i want to send one more :D how can i do that
vuhoanglam
@vuhoanglam
is there a way to naming the filerouters
Gerasimos (Makis) Maropoulos
@kataras

Hello @vuhoanglam, you can do it from the donate form, from https://iris-go.com. Thanks :heart: .

Yes you can name file routers. The HandleDir method returns a slice of []*Route. Each *Route has a Name property, just modify it to your preffered onces.

frans
@dafa168
Docs : Upload files -- Single file , method: ctx.SaveFormFile(file, dest) not found ?
odiferousmint
@odiferousmint
Hello. When I build my executable and run it, it tells me I have installed an invalid version. It tells me to install it with go get -u github.com/kataras/iris/v12@latest so I ran that and it was successful. I built the executable again, re-ran, and I got the same warning/error. It asks me if I want to autofix it. I went for it, and I get [FTAL] 2021/02/05 02:18 autofix: replace import paths: open /tmp/foo/test: text file busy. test here is the executable that gave me this warning and asked me if I want to autofix. How can I fix it manually or workaround this issue?
odiferousmint
@odiferousmint
This is what I get:
$ ./test
You have installed an invalid version. Install with:
        go get -u github.com/kataras/iris/v12@latest

        If your Open Source project depends on that pre-go1.9 version please open an issue
        at https://github.com/kataras/iris/issues/new and share your repository with us,
        we will upgrade your project's code base to the latest version for free.

        If you have a commercial project that you cannot share publically, please contact with
        @kataras at https://chat.iris-go.com. Assistance will be provided to you and your colleagues
        for free.

Run autofix? (Y/n): y
[INFO] 2021/02/05 02:18 Backup </tmp/foo> to </tmp/foo_irisbckp.zip>
[INFO] 2021/02/05 02:18 Updating...
[FTAL] 2021/02/05 02:18 autofix: replace import paths: open /tmp/foo/test: text file busy
I am not entirely sure what it is trying to do with the executable or why. Is there any other way to run this autofix perhaps?
odiferousmint
@odiferousmint
Ah, I fixed it, never mind it. I just had to fix the imports.
odiferousmint
@odiferousmint

If I had

app := iris.Default()
app.StaticWeb("/css", "./website/assets/css")

then what would be its equivalent in the latest version of iris?

Massimiliano Bertinetti
@eclecticlly
Gerasimos (Makis) Maropoulos
@kataras
Hello @odiferousmint, it's actually app.HandleDir("/css", "./website/assets/css") (the first input parameter now is an interface{} which can accept string and http.FileSystem, there is a third optional parameter which is the iris.DirOptions - you can configure the static file server).
Hello @dafa168 , SaveFormFile exists. Please make sure you follow the Installation guide (go get github.com/kataras/iris/v12@master).
qilx
@qilx
Please is there any documentation for v12 version? It seems that https://www.iris-go.com/docs/ is for master branch.
qilx
@qilx
Anybody tried to write custom tag parser for pongo2 and register it in view.DjangoEngine? I have problems to write Execute(ctx, w) function.
qilx
@qilx
IT seems like view package is missing type aliases for pongo2.ExecutionContext and pongo2.TemplateWriter.
qilx
@qilx
Is it possible to disable removing of trailing slashes?
Alex Rojo
@arojoal
Hi is there a way to get the full url of a route?
I need to get the full url of a route in order to include it as a value in a response json
qilx
@qilx
I guess you can get it from c.Request().URL
tuhao1020
@tuhao1020
@arojoal if you have a query string, you can use ctx.FullRequestURI() + "?" + ctx.Request().URL.RawQuery
tuhao1020
@tuhao1020
@kataras can app.Get run in other go routines?
Sourav pandit
@BusinessOcean
Hi all any one faced issue with grpc tls: first record does not look like a TLS handshake
Sourav pandit
@BusinessOcean

@kataras Still stuck in above issue unable to run grpc example .I am very new backend development. Tnx

here i am getting issue . if i try to change the port 443 to some thing else api won't work . if i request with 443 getting tls handshake fail issue

i followed https://github.com/kataras/iris/tree/master/_examples/mvc/grpc-compatible link

iulo
@iulo
Hi guys. do mw have any upgrade docs from v11 to v12 ?
Vũ Hoàng Lâm
@lamvh_gitlab
hey guys, in your personal opinion, should I use mvc feature?
Wang Weiming
@will-beta
app.ConfigureContainer() undefined in v12. Could anyone help?
Wang Weiming
@will-beta
also, iris.APIContainer is not found in v12.
Gerasimos (Makis) Maropoulos
@kataras
@will-beta go get -u github.com/kataras/iris/v12@master
bikashpdash
@bikashpdash
Hii I want to start a project in go is iris is good for large projects
Navid Dezashibi
@knavels
@bikashpdash yes it worth trying and seeing it by yourself in action, it does have good implementation and good structure to start, be sure to check the documentation out
Wang Weiming
@will-beta
@kataras It works. Thanks a lot. But why it is necessary? Neither go get -u github.com/kataras/iris/v12@latest nor go mod tidy can not solve the problem.
John Deng
@binghan.deng_gitlab
@kataras I would like to set status code in the custom middleware after the main handler is finished according to the result that returned from the main handler, I tried below example and changed a litter bit. However, it does not work. can you or someone else help me on this issue?
package main

import (
    "log"
    "time"

    "github.com/kataras/iris/v12"
)

func main() {
    app := iris.New()

    app.Use(Filter())

    booksAPI := app.Party("/books")
    {

        // GET: http://localhost:8080/books
        booksAPI.Get("/", list)
        // POST: http://localhost:8080/books
        booksAPI.Post("/", create)
    }

    app.Listen(":8080")
}

// Book example.
type Book struct {
    Title string `json:"title"`
}

func list(ctx iris.Context) {
    books := []Book{
        {"Mastering Concurrency in Go"},
        {"Go Design Patterns"},
        {"Black Hat Go"},
    }

    ctx.JSON(books)
    // TIP: negotiate the response between server's prioritizes
    // and client's requirements, instead of ctx.JSON:
    // ctx.Negotiation().JSON().MsgPack().Protobuf()
    // ctx.Negotiate(books)
    ctx.StatusCode(403)
}

func Filter() iris.Handler {
    return func(ctx iris.Context) {
        t := time.Now()

        // Set a shared variable between handlers
        ctx.Values().Set("framework", "iris")

        // before request

        ctx.Next()

        // after request
        latency := time.Since(t)
        log.Print(latency)

        // access the status we are sending
        status := ctx.GetStatusCode()
        log.Println(status)

        // How to set the status code according to the final result?
        // e.g. if err != nil {
        ctx.StatusCode(403)
    }
}

func create(ctx iris.Context) {
    var b Book
    err := ctx.ReadJSON(&b)
    // TIP: use ctx.ReadBody(&b) to bind
    // any type of incoming data instead.
    if err != nil {
        ctx.StatusCode(iris.StatusInternalServerError)
        return
    }

    println("Received Book: " + b.Title)

    ctx.StatusCode(iris.StatusCreated)
}
Zhenwei Liu
@zhenwei12138
test
hello
Vũ Hoàng Lâm
@lamvh_gitlab
go get github.com/iris-contrib/swagger/v12@master always pull old version which outdated compare to the document
Wu JingFeng
@iwujingfeng
I love iris!
Arsene
@Tochemey
Hello folks. Please is there a doc on how to use logrus with iris
devBash99
@devBash99
Is there a http request type module/wrapper to make external requests in iris.
Arsene
@Tochemey
I have a request suggestion to make. Using the grpc feature of iris requires that one should use TLS which I don't think it should be enforced on the developer because depending upon the infrastructure of a company you may no need a TLS to run a gRPC service. The choice should be let to the developer to make
Every gRPC library out there makes it optional to use so I think iris should follow that trend.
qikong333
@qikong333
请问发中文会不会不好