Что за ошибка 404, когда я пытаюсь загрузить файл с POST в мой API? - PullRequest
0 голосов
/ 05 июня 2019

Здесь api to go, который должен загружать файл при публикации запроса вида

curl -X POST -d "url = http: //site.com/file.txt" http: // localhost: 8000 / submit

Но 404 вылезает, в чем причина?Или как скачать файлы через POST в API?

func downloadFile(url string) Task {
    var task Task
    resp, err := http.Get(url)
    if err != nil {
        fmt.Println("Error while downloading")
    }
    defer resp.Body.Close()
    filename := strings.Split(url, "/")[len(strings.Split(url, "/"))-1]
    fmt.Println(filename)
    out, err := os.Create(filename)
    if err != nil {
        fmt.Println("Error while downloading")
    }
    defer out.Close()
    _, err = io.Copy(out, resp.Body)
    fmt.Println("Error while downloading")
}

func submit(c *gin.Context) {
    c.Header("Content-Description", "File Transfer")
    c.Header("Content-Transfer-Encoding", "binary")
    url := c.Param("url")
    fmt.Println("url " + url)
    task := downloadFile(url)
    hashFile(task.ID)
    c.JSON(200, task.ID)
}

func main() {
    router := gin.Default()
    router.POST("/submit/:url", submit)
}

1 Ответ

2 голосов
/ 05 июня 2019

HTTP-статус 404 означает, что серверу не удалось найти запрошенный URL-адрес. Это, кажется, имеет смысл, учитывая вашу команду curl. Вы, кажется, запрашиваете URL http://localhost:8000/submit, но ваше приложение имеет только один маршрут:

router.POST("/submit/:url", submit)

Для этого маршрута требуется второй сегмент URL после /submit, например /submit/foo.

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