Срочно. Выручайте. Работа с API сайта producthunt.com

swift3
xcode
ios
swift

#1

Добрый день! Помогите, прислали тестовое задание, а я только начинаю свой путь программиста, не могу разобраться с API, необходимо получить товары на сегодня для выбранной категории.


#2


Параметрах отправляете, что хотите получить там дока большая все написано.

P.s на вопрос работали ли вы с апи вы наверное соврали, что да?
И что за контора если не секрет?


#3

Я не писал что работал с API, только изучал курсы на данном сайте.
Документацию я нашел.
Мне нужна помощь в составлении правильного запроса.
В уроках все просто, а вот на практике что-то не получается((


#4

Скутаренко, Кокорин много уроков по апи


#5

Спасибо!
Я думал, знающие люди помогут с составлением запроса, для получения данных.


#6

Я для вас написал простой пример.
Заходите на свой сайт, регистрируетесь. Переходите в меню в API DASHBOARD. Там регистрируете свое приложение.
Потом открываете документацию по авторизации и читаете.

//: Playground - noun: a place where people can play

import PlaygroundSupport
import Foundation
PlaygroundPage.current.needsIndefiniteExecution = true


// Route POST /v1/oauth/token
let authClientOnly = "/v1/oauth/token"

var urlComponents = URLComponents()
urlComponents.scheme = "https"
urlComponents.host = "api.producthunt.com"
urlComponents.path = authClientOnly

let sessionConfiguration = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfiguration)

var request = URLRequest(url: urlComponents.url!)

request.httpMethod = "POST"


// Headers
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("api.producthunt.com", forHTTPHeaderField: "Host")


// Body
let bodyObject = [
  "client_id" : "1ff039a7b0457e6ce098ac7e1616385badc30c65755969f1fb45021af5fc2b03",
  "client_secret" : "2e755648a60aa83aac4a6844305d50487d2352eed693cd600c4e35f72df323fe",
  "grant_type" : "client_credentials"
]

request.httpBody = try! JSONSerialization.data(withJSONObject: bodyObject, options: [])

let task = session.dataTask(with: request) { (data, response, error) in
  let json = try? JSONSerialization.jsonObject(with: data!, options: [])
  print(json)
}

task.resume()

Print вам выдаст примерно такой ответ:

Optional({
    "access_token" = b58b91ed123f5a75cd80dea48f13f2fb0bf26f85db3dca1e6ee3cc1ec693cd43;
    scope = public;
    "token_type" = bearer;
})

Это обычно json. Парсите, сохраняете куда-то access_token.
Далее. https://api.producthunt.com/v1/docs/posts/posts_index_get_the_tech_posts_of_today
Поля в запросе заполняются аналогично. access_token у вас теперь есть.


#7

Спасибо Вам огромное!


#8

А что вы будете делать, когда вам дадут другое задание? Путь программиста состоит в поиске решения. Если вы не в состоянии его найти или написать, возможно Вам стоит набраться больше практического опыта.


#9

lodar, если Вы такой умный, то подскажите а где этого опыта набираться???
Вот я как-раз на реальных задания и набираюсь опыта, пытаясь их решить. Прошу помощи, изучаю и запоминаю пути решения того что на данный момент выполнить не могу.


#10

Да хотя бы попросите у Ивана задачки по swift. Их там больше 100 кажется было. Гугл в помощь. Разбейте свои задачи на части и разбирайтесь, конкретно под ваш топик: что такое json, как с ним работать, , сериализация структур в json и обратно, что такое хттп, что с ним делать.

А ваш топик начинался так: ребята решите за меня задачку, хочу стать программистом, но вы таки напишите за меня.


#11

Вы не правы.
Я согласен что задачки можно решать и набивать руку, но когда решаешь задачки которые используются в реальной жизни получается продуктивнее.
К примеру если взять урок Ивана по API там используется один вид построения запроса, а в моей задаче другой вид и “ntwf” мне подсказал. Теперь на основании его примера я строю свои запросы для получения данных.
Также по поводу опыта, можно учиться годами на задачках и когда придет время сделать приложение по реальному заказу, то возникнет уйму вопросов, на которые придется также искать ответы в интернете или спрашивать у людей которые уже имели опыт с этим работать. Когда в работе есть наставник (человек который подскажет, направит) так гораздо эффективнее.


#12